package com.ysq.www.api.work.controller;


import com.alibaba.druid.util.StringUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ysq.www.api.work.entity.Synergy;
import com.ysq.www.api.work.service.ISynergyService;
import com.ysq.www.common.annotation.AuthToken;
import com.ysq.www.common.result.ResultMsg;
import com.ysq.www.common.utils.Comm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 协同办公表 前端控制器
 * </p>
 *
 * @author dql
 * @since 2020-08-11
 */
@RestController
@RequestMapping("/work/synergy")
public class SynergyController {

    @Autowired
    private ISynergyService synergyService;

    /**
     * 查询已发起详情
     * @param syId 协同办公id
     * @return ResultMsg
     */
    @GetMapping("/detail")
    @AuthToken
    public ResultMsg selectDetailById(Integer syId){
        Synergy synergy = synergyService.selectDetailById(syId);
        return ResultMsg.SUCCESS.setNewMsg("查询已发起详情成功").setNewData(synergy);
    }

    /**
     * 查询待处理/已处理/抄送协同办公详情
     * @param syId 协同办公id
     * @return ResultMsg
     */
    @GetMapping("/pending")
    @AuthToken
    public ResultMsg selectPendingById(Integer syId){
        Synergy synergy = synergyService.selectPendingById(syId);
        return ResultMsg.SUCCESS.setNewMsg("查询待处理详情成功").setNewData(synergy);
    }

    /**
     * 提交协同办公
     * @param synergy 协同办公对象
     * @return ResultMsg
     */
    @PostMapping("/add")
    @AuthToken
    public ResultMsg addSynergy(@RequestBody Synergy synergy){
        ResultMsg rm = synergyService.addSynergy(synergy);
        return rm;
    }

    /**
     分页查询我的已发起的协同待办
     * @param userId 用户id
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param time 日期
     * @return ResultMsg
     */
    @GetMapping("/sponsor")
    @AuthToken
    public ResultMsg selectSponsorById(Integer userId,Integer pageNumber,Integer pageSize,String time){
        //if (StringUtils.isEmpty(time)) time = Comm.getSysDate(7);
        IPage<Synergy> sPage = synergyService.selectSponsorById(userId,pageNumber,pageSize,time);
        return ResultMsg.SUCCESS.setNewMsg("查询已发起协同待办成功").setNewData(sPage);
    }


    /**
     * 查询待处理协同待办
     * @param userId 用户id（审批者id）
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param time 日期
     * @return ResultMsg
     */
    @GetMapping("/checkId")
    @AuthToken
    public ResultMsg selectByCheckId(Integer userId,Integer pageNumber,Integer pageSize,String time){
        //if (StringUtils.isEmpty(time)) time = Comm.getSysDate(7);
        IPage<Synergy> sPage = synergyService.selectByCheckId(userId,pageNumber,pageSize,time);
        return ResultMsg.SUCCESS.setNewMsg("查询待处理协同待办成功").setNewData(sPage);
    }

    /**
     * 查询已处理的协同待办
     * @param userId 审批者id
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param time 日期
     * @return ResultMsg
     */
    @GetMapping("/dispose")
    @AuthToken
    public ResultMsg selectDisposeById(Integer userId,Integer pageNumber,Integer pageSize,String time){
        //if (StringUtils.isEmpty(time)) time = Comm.getSysDate(7);
        IPage<Synergy> sPage = synergyService.selectDisposeById(userId,pageNumber,pageSize,time);
        return ResultMsg.SUCCESS.setNewMsg("查询已处理协同待办成功").setNewData(sPage);
    }

    /**
     * 查询抄送我协同待办
     * @param userId 用户id
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param time 日期
     * @return ResultMsg
     */
    @GetMapping("/copyTo")
    @AuthToken
    public ResultMsg selectCopyToMe(Integer userId,Integer pageNumber,Integer pageSize,String time) {
        //if (StringUtils.isEmpty(time)) time = Comm.getSysDate(7);
        IPage<Synergy> sPage = synergyService.selectCopyToMe(userId,pageNumber,pageSize,time);
        if (sPage == null) return ResultMsg.SUCCESS.setNewMsg("查询成功，数据为空");
        return ResultMsg.SUCCESS.setNewMsg("查询抄送我协同待办成功!").setNewData(sPage);
    }

    /**
     * 撤销协同办公
     * @param syId 协同办公id
     * @return ResultMsg
     */
    @GetMapping("/repeal")
    @AuthToken
    public ResultMsg repealSynergyById(Integer syId){
        ResultMsg rm = synergyService.repealSynergyById(syId);
        return rm;
    }

    /**
     * 处理协同办公请求
     * @param syId 协同办公id
     * @param result 处理结果：1通过，2驳回
     * @return ResultMsg
     */
    @GetMapping("/check")
    @AuthToken
    public ResultMsg disposeSynergyById(Integer syId,Integer result){
        ResultMsg rm = synergyService.disposeSynergyById(syId, result);
        return rm;
    }

}
